C语言stdout,stdin流介绍

您所在的位置:网站首页 fprintf stdout C语言stdout,stdin流介绍

C语言stdout,stdin流介绍

#C语言stdout,stdin流介绍| 来源: 网络整理| 查看: 265

stdout,stdin, stderr是一个C程序中默认开启的三个数据流(文章只介绍stdout, stdin.)

stdout -- 标准输出流 -- 屏幕

stdin -- 标准输入流 -- 键盘

stderr -- 标准错误流 -- 屏幕

我们写程序时,有时想把数据输出到屏幕上,有时想把数据输出到硬盘上,有时候想把数据输出到软盘上,有时想把数据输出到光盘上...

所以我们在写程序的时候会经常操控各种各样的硬件,硬件的不同,读写方式也不同,所以我们难道要懂得各种各样硬件的读写方式吗

所以在程序和硬件中间高度抽象了一个流的概念,我们只需要把数据丢给流,它帮我们来完成对应硬件的读写方式,我们就便利了许多。

一、stdout介绍 我们先看看printf()函数

 函数

printf

int printf(const char* format, ...);

将格式化数据打印到标准输出

将格式指向的C字符串写入标准输出(stdout)。如果格式包含格式说明符(以“%”开头的子序列),则格式后面的附加参数将被格式化并插入到结果字符串中,以替换其各自的说明符。

这里提到了将指向的C字符串写入标准输出,

我们写printf("hello world!");就自动输出到屏幕上,就是因为printf()函数默认把(格式化)字符串输出到stdout流,也就是屏幕上。

与fprintf()函数比较

 函数

fprintf

int fprintf(FILE* stream, const char* format, ...);

将格式化的数据写入流

将格式指向的C字符串写入流。如果格式包含格式说明符(以“%”开头的子序列),则格式后面的附加参数将被格式化并插入到结果字符串中,以替换其各自的说明符。

在format参数之后,函数需要至少与format指定的数量相同的附加参数。

我们可以用printf()和fprintf()作对比

 fprintf()函数前面多了一个FILE* stream的参数,它表示的是流的意思。 前面说过,printf()是默认输出到stdout流,这里的fprintf()函数就可以自己设置输出到哪个流。

如果fprintf()函数的第一个参数是stdout, 可以等价于printf()函数。

二、stdin介绍

我们来看看scanf()函数和fscanf()函数的区别

函数

sacnf

int scanf(const char* format, ...);

从标准输入读取格式化数据

从stdin读取数据,并根据参数格式将其存储到附加参数所指向的位置。

附加参数应指向已分配的对象,该对象的类型由格式字符串中相应的格式说明符指定。

函数

fsacnf

int fscanf(FILE* stream, const char* format, ...);

从流中读取格式化数据

从流读取格式化数据从流读取数据,并根据参数格式将其存储到附加参数所指向的位置。

附加参数应指向已分配的对象,该对象的类型由格式字符串中相应的格式说明符指定。

我们不难得出,fscanf()函数的范围更加广一些,我们可以把第一个参数写成文件指针,那么我们可以从一个文件中读取到信息(fprintf()函数也可以第一个参数位文件指针,可以输出到文件当中,就不会显示到我们的屏幕上)。

当然,也可以是stdin,这和scanf()函数等价。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3